<?php

class RegisterAction extends fvAction {

	function __construct () {
		parent::__construct(fvSite::$Layoult);
	}

	function executeIndex() {
		if (!fvRequest::getInstance()->isXmlHttpRequest()) {
			return self::$FV_OK;
		} else {
			return self::$FV_AJAX_CALL;
		}
	}
	
	function executeKcaptcha(){
		return self::$FV_NO_LAYOULT;
	}

	function executeSave() {
		$request = fvRequest::getInstance();
		if (!$Customers = CustomerManager::getInstance()->getByPk($request->getRequestParameter('id'))) {
			$Customers = new Customer();
		}
		$p = $request->getRequestParameter('p');
		$f = $request->getRequestParameter('f');
		if ($request->getRequestParameter('kcaptcha') != fvSite::$fvSession->get('keystring') && !isset($f)){
			fvSite::$fvSession->set('Success', false);
			fvSite::$fvSession->set('Customer', $p);
			fvSite::$fvSession->set('error', array('kcaptcha' => 'Невірний перевірочний код'));
			fvDispatcher::getInstance()->redirect(fvSite::$fvConfig->get('dir_web_root') . $request->getRequestParameter('module') . "/");	
		}
		else{
			if ($p){
				$Customers->updateFromRequest($p);
				if ($Customers->save(false)) {
					$Subscriber = new Subscribers();
					$Subscriber->email = $Customers->email;
					$Subscriber->full_name = $Customers->full_name;
					$Subscriber->group_id = '"1"';
					$Subscriber->save(false);
					$mail = new html_mime_mail();
					$letter = "
		                <html>
		                <body>
		                	Шановний (-а), {$p["full_name"]}!<p>
							Дякуємо за реєстрацію на <a href='http://{$_SERVER["SERVER_NAME"]}/'>Крамниця-А</a>.<br>
							Будь-ласка, перейдіть за <a href='http://{$_SERVER["SERVER_NAME"]}/register/confirm?uuid=".md5($p['email'].$p['full_name'])."'>посиланням</a>, щоб завершити реєстрацію:<br> 
							<a href='http://{$_SERVER["SERVER_NAME"]}/register/confirm?uuid=".md5($p['email'].$p['full_name'])."'>http://{$_SERVER["SERVER_NAME"]}/register/confirm?uuid=".md5($p['email'].$p['full_name'])."</a><br>
							(якщо Ви не реєструвались на <a href='http://{$_SERVER["SERVER_NAME"]}/'>Крамниця-А</a>, тоді достатньо просто проігнорувати даний лист).<p>
							Команда <a href='http://{$_SERVER["SERVER_NAME"]}/'>Крамниця-А</a>.
		                </body>
		                </html>";
					$mail->add_html($letter);
					$mail->build_message("w");
					$mail->SendMail("noreply@kramnyca.info",'Крамниця - А  |  Едине місце актуальних українських товарів',$p[email],$p[full_name], "Реєстрація на сайті");
					fvSite::$fvSession->set('Success', true);
					fvDispatcher::getInstance()->redirect(fvSite::$fvConfig->get('dir_web_root') . $request->getRequestParameter('module') . "/");
				} else {
					fvSite::$fvSession->set('Customer', $p);
					fvSite::$fvSession->set('Success', false);
					fvSite::$fvSession->set('error', $Customers->getValidationResult());
					fvDispatcher::getInstance()->redirect(fvSite::$fvConfig->get('dir_web_root') . $request->getRequestParameter('module') . "/");
				}
			}
			elseif ($f){
				$Customer = CustomerManager::getInstance()->getAll("email='".trim($f['email']) ."'");
				if ($Customer[0]){
					$NewPassword = CustomerManager::getInstance()->generatePassword(10);
					//$n['password'] = $NewPassword;
					$n['password1'] = $NewPassword;
					$request->putRequestParameter('m',$n);
					$Customer[0]->password = $NewPassword;
					$Customer[0]->save(false);
					$mail = new html_mime_mail();
					$letter = "
		                <html>
		                <body>
		                	Шановний (-а), {$Customer[0]->full_name}!<p>
							Запит на поновлення паролю на сайті <a href='http://{$_SERVER["SERVER_NAME"]}/'>Крамниця-А</a> успішно виконано.<p>
							Ваші нові дані для входу в систему:<br>
							Логін: {$Customer[0]->email}<br>
							Пароль: {$NewPassword}<p> 
							
							Команда <a href='http://{$_SERVER["SERVER_NAME"]}/'>Крамниця-А</a>.
		                </body>
		                </html>";
					$mail->add_html($letter);
					$mail->build_message("w");
					$mail->SendMail("noreply@kramnyca.info",'Крамниця - А  |  Едине місце актуальних українських товарів',$Customer[0]->email,$Customer[0]->full_name, "Поновлення даних на сайті");
					fvSite::$fvSession->set('Success', 'Ваші дані успішно поновлено. Перевірте будь-ласка свою пошту.');
					fvDispatcher::getInstance()->redirect(fvSite::$fvConfig->get('dir_web_root') . $request->getRequestParameter('module') . "/forget");
				}
				else{
					fvSite::$fvSession->set('error', 'Користувача із вказаними даними не існує.');
					fvDispatcher::getInstance()->redirect(fvSite::$fvConfig->get('dir_web_root') . $request->getRequestParameter('module') . "/forget");
				}
			}
		}
	}

	function executeConfirm() {
		$request = fvRequest::getInstance();
		if ($request->getRequestParameter('uuid')){
			if (!$Customer = CustomerManager::getInstance()->getAll('MD5(CONCAT_WS("", email, full_name)) = '.'"'.$request->getRequestParameter('uuid').'"')) {
				fvSite::$fvSession->set('error', "Помилка у запиті");
				fvDispatcher::getInstance()->redirect(fvSite::$fvConfig->get('dir_web_root') . $request->getRequestParameter('module') . "/confirm/");
			}
			$p['active'] = 1;
			$Customer[0]->updateFromRequest($p);
			$NewPassword = CustomerManager::getInstance()->generatePassword(10);
			$n['password1'] = $NewPassword;
			$request->putRequestParameter('m',$n);
			$Customer[0]->password = $NewPassword;
			$Customer[0]->save(false);
			if ($Customer[0]->save(false)) {
				$mail = new html_mime_mail();
				$letter = "
	            <html>
                	<body>
                		Шановний (-а), {$Customer[0]->full_name}!<p>
						Вашу реєстрацію на <a href='http://{$_SERVER["SERVER_NAME"]}/'>Крамниця-А</a> підтверждено.<p>
						Ваші нові дані для входу в систему:<br>
						Логін: {$Customer[0]->email}<br>
						Пароль: {$NewPassword}<p>  
						Команда <a href='http://{$_SERVER["SERVER_NAME"]}/'>Крамниця-А</a>.
                	</body>
                </html>";
				$mail->add_html($letter);
				$mail->build_message("w");
				$mail->SendMail("noreply@kramnyca.info",'Крамниця - А  |  Едине місце актуальних українських товарів',$Customer[0]->email,$Customer[0]->full_name, "Підтверждення реєстрації на сайті");
				fvSite::$fvSession->set('Success', true);
				fvSite::$fvSession->set('uuid', $request->getRequestParameter('uuid'));
				fvDispatcher::getInstance()->redirect(fvSite::$fvConfig->get('dir_web_root') . $request->getRequestParameter('module') . "/confirm/");
			} else {
				fvSite::$fvSession->set('Customer', $p);
				fvSite::$fvSession->set('Success', false);
				fvSite::$fvSession->set('error', $Producers->getValidationResult());
				fvDispatcher::getInstance()->redirect(fvSite::$fvConfig->get('dir_web_root') . $request->getRequestParameter('module') . "/confirm/");
			}
		}
	}
	
	function executeForget(){
		if (!fvRequest::getInstance()->isXmlHttpRequest()) {
			return self::$FV_OK;
		} else {
			return self::$FV_AJAX_CALL;
		}
	}

}

?>
